home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / devQueue.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  2KB  |  71 lines

  1. /*
  2.  * devQueue.h --
  3.  *
  4.  *    Declarations for the Device Queue interface.  This file defines the 
  5.  *    interface to the Sprite device queue routines used to order I/O
  6.  *    request for disk and other devices. 
  7.  *
  8.  *
  9.  * Copyright 1989 Regents of the University of California
  10.  * Permission to use, copy, modify, and distribute this
  11.  * software and its documentation for any purpose and without
  12.  * fee is hereby granted, provided that the above copyright
  13.  * notice appear in all copies.  The University of California
  14.  * makes no representations about the suitability of this
  15.  * software for any purpose.  It is provided "as is" without
  16.  * express or implied warranty.
  17.  *
  18.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/dev/devQueue.h,v 9.2 91/03/30 17:01:00 jhh Exp $ SPRITE (Berkeley)
  19.  */
  20.  
  21. #ifndef _DEVQUEUE
  22. #define _DEVQUEUE
  23.  
  24. /*
  25.  * Definitions in this file use the List_Links data structure.
  26.  */
  27.  
  28. #ifdef KERNEL
  29. #include <list.h>
  30. #include <syncLock.h>
  31. #else
  32. #include <list.h>
  33. #include <kernel/syncLock.h>
  34. #endif
  35.  
  36.  
  37. /*
  38.  * DEV_QUEUE_FIFO_INSERT - InsertProc argument to Dev_QueueCreate specifing 
  39.  *               FIFO ordering.
  40.  * DEV_QUEUE_ANY_QUEUE_MASK - Mask to Dev_QueueGetNextFromSet specifing all
  41.  *                  queue sets.
  42.  */
  43.  
  44. #define    DEV_QUEUE_FIFO_INSERT    ((void (*)())NIL)
  45. #define    DEV_QUEUE_ANY_QUEUE_MASK ((unsigned int) 0xffffffff)
  46.  
  47. /* data structures 
  48.  * 
  49.  * DevCtrlQueues    - An anonymous pointer to structure containing the 
  50.  *              device queues of a controller.
  51.  * DevQueue        - An anonymous pointer to a structure containing a
  52.  *              device queue.
  53.  */
  54.  
  55. typedef struct DevCtrlQueues *DevCtrlQueues;
  56. typedef struct DevQueue         *DevQueue;
  57.  
  58. /* procedures */
  59.  
  60. extern DevCtrlQueues Dev_CtrlQueuesCreate _ARGS_((Sync_Semaphore *mutexPtr,
  61.     Boolean (*entryAvailProc)()));
  62. extern DevQueue Dev_QueueCreate _ARGS_((DevCtrlQueues ctrlQueue,
  63.     unsigned int queueBit, void (*insertProc)(), ClientData clientData));
  64. extern Boolean Dev_QueueDestroy _ARGS_((DevQueue devQueue));
  65. extern void Dev_QueueInsert _ARGS_((DevQueue devQueue, List_Links *elementPtr));
  66. extern List_Links *Dev_QueueGetNext _ARGS_((DevQueue devQueue));
  67. extern List_Links *Dev_QueueGetNextFromSet _ARGS_((DevCtrlQueues ctrl,
  68.     unsigned int queueMask, ClientData *clientDataPtr));
  69.  
  70. #endif /* _DEVQUEUE */
  71.